An example of a periodic event in a slow USB 1.1 type device is the polling of a keyboard for key repeat data. In a key repeat event a key is pressed and held on the keyboard. The key scan data will be resent to the keyboard controller driver every 8 milliseconds so long as the key is not released. As a result the computer will display or otherwise enter the same key repetitively every 8 milliseconds until the key press is released. In USB 1.1 devices, this is accomplished by polling the keyboard driver every 8 milliseconds and returning key scan data for each polling operation. These repetitive polling operations were scheduled and performed by a universal host control interface (UHCI) or an open host control interface (OHCI) as defined for USB 1.1. These interfaces are known as the classic interfaces for USB.
A problem has arisen in that the enhanced host control interface (EHCI) for USB 2.0 does not provide a mechanism for generating generic periodic events internally. It is possible to generate periodic events based on USB 1.1 devices, but this event will not be generic and needs a lot of computer resources. It is always possible to use clocking available at the computer, but this clocking is not necessarily reliable. It is preferable to use internal operations in the computer that are performed in a known time interval. For example the accessing of a non-existent USB device using transfer structures created in memory from the host control driver by a universal host control interface or an open host control interface driver can be used to provide a periodic timed event.
When a slow USB type device such as a keyboard driver is attached to a high speed USB 2.0 port, this USB 2.0 port is controlled through the enhanced host control interface. Therefore, there is no mechanism in the host control driver using only EHCI to internally generate a periodic timing event.
It is with respect to this problem and others that the present invention has been created.